home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 722 / 722.xpi / chrome / noscript.jar / content / noscript / Strings.js < prev    next >
Text File  |  2010-02-12  |  2KB  |  62 lines

  1. function Strings(chromeName) {
  2.   this.chromeName = chromeName;
  3. }
  4.  
  5. Strings.wrap = function(s, length, sep) {
  6.   if (!sep) sep = ' ';
  7.     
  8.   function wrapPara(p) {
  9.     if (!length) length = 80;
  10.     if (p.length <= length) return p;
  11.     chunks = [];
  12.     var pos;
  13.     while (p.length > length) {
  14.       pos = p.lastIndexOf(sep, length);
  15.       if (pos < 0) pos = p.indexOf(sep, length);
  16.       if (pos < 0) break;
  17.       chunks.push(p.substring(0, pos));
  18.       p = p.substring(pos + 1);
  19.     }
  20.  
  21.     if (chunks.length) {
  22.       res  = chunks.join("\n");
  23.       if (p.length) res += "\n" + p;
  24.       return res;
  25.     } else return p;
  26.   }
  27.   if (typeof(s) != "string") s = s.toString();
  28.   var paras = s.split("\n");
  29.   
  30.   for (var j = 0; j < paras.length; j++) paras[j] = wrapPara(paras[j]);
  31.   return paras.join("\n");
  32. }
  33.  
  34. Strings.prototype = {
  35.   bundles: {},
  36.   getBundle: function(path) {
  37.     if (path in this.bundles) return this.bundles[path];
  38.     try {
  39.       return this.bundles[path] = 
  40.         CC["@mozilla.org/intl/stringbundle;1"]
  41.                   .getService(CI.nsIStringBundleService)
  42.                   .createBundle("chrome://" + this.chromeName +  "/" + path +
  43.                                 "/" + this.chromeName + ".properties");
  44.     } catch(ex) {
  45.       return this.bundles[path] = null;
  46.     }
  47.   },
  48.   
  49.  
  50.   _stringFrom: function(bundle, name, parms) {
  51.     try {
  52.       return parms ? bundle.formatStringFromName(name, parms, parms.length) : bundle.GetStringFromName(name);
  53.     } catch(ex) {
  54.       return null;
  55.     }
  56.   }
  57. ,
  58.   getString: function(name, parms) {
  59.     var s = this._stringFrom(this.getBundle("locale"), name, parms);
  60.     return s || this._stringFrom(this.getBundle("content/en-US"), name, parms) || name;
  61.   }
  62. }